tests = [
  {
    'name': 'checkkeys',
    'sources': ['checkkeys.c'],
  },
  {
    'name': 'checkkeysthreads',
    'sources': ['checkkeysthreads.c'],
  },
  {
    'name': 'loopwave',
    'sources': ['loopwave.c', 'testutils.c'],
  },
  {
    'name': 'loopwavequeue',
    'sources': ['loopwavequeue.c', 'testutils.c'],
  },
  {
    'name': 'testsurround',
    'sources': ['testsurround.c'],
  },
  {
    'name': 'testresample',
    'sources': ['testresample.c'],
  },
  {
    'name': 'testaudioinfo',
    'sources': ['testaudioinfo.c'],
  },
  {
    'name': 'testautomation',
    'sources': [
      'testautomation_audio.c',
      'testautomation.c',
      'testautomation_clipboard.c',
      'testautomation_events.c',
      'testautomation_guid.c',
      'testautomation_hints.c',
      'testautomation_joystick.c',
      'testautomation_keyboard.c',
      'testautomation_log.c',
      'testautomation_main.c',
      'testautomation_math.c',
      'testautomation_mouse.c',
      'testautomation_pixels.c',
      'testautomation_platform.c',
      'testautomation_rect.c',
      'testautomation_render.c',
      'testautomation_rwops.c',
      'testautomation_sdltest.c',
      'testautomation_stdlib.c',
      'testautomation_subsystems.c',
      'testautomation_surface.c',
      'testautomation_syswm.c',
      'testautomation_timer.c',
      'testautomation_video.c',
    ],
  },
  {
    'name': 'testmultiaudio',
    'sources': ['testmultiaudio.c', 'testutils.c'],
  },
  {
    'name': 'testaudiohotplug',
    'sources': ['testaudiohotplug.c', 'testutils.c'],
  },
  {
    'name': 'testaudiocapture',
    'sources': ['testaudiocapture.c'],
  },
  {
    'name': 'testatomic',
    'sources': ['testatomic.c'],
  },
  {
    'name': 'testintersections',
    'sources': ['testintersections.c'],
  },
  {
    'name': 'testrelative',
    'sources': ['testrelative.c'],
  },
  {
    'name': 'testhittesting',
    'sources': ['testhittesting.c'],
  },
  {
    'name': 'testdraw2',
    'sources': ['testdraw2.c'],
  },
  {
    'name': 'testdrawchessboard',
    'sources': ['testdrawchessboard.c'],
  },
  {
    'name': 'testdropfile',
    'sources': ['testdropfile.c'],
  },
  {
    'name': 'testerror',
    'sources': ['testerror.c'],
  },
  {
    'name': 'testfile',
    'sources': ['testfile.c'],
  },
  {
    'name': 'testgamecontroller',
    'sources': ['testgamecontroller.c', 'testutils.c'],
  },
  {
    'name': 'testgeometry',
    'sources': ['testgeometry.c', 'testutils.c'],
  },
  {
    'name': 'testgesture',
    'sources': ['testgesture.c'],
  },
  {
    'name': 'testgl2',
    'sources': ['testgl2.c'],
  },
  {
    'name': 'testgles',
    'sources': ['testgles.c'],
  },
  {
    'name': 'testgles2',
    'sources': ['testgles2.c'],
  },
  {
    'name': 'testhaptic',
    'sources': ['testhaptic.c'],
  },
  {
    'name': 'testhotplug',
    'sources': ['testhotplug.c'],
  },
  {
    'name': 'testrumble',
    'sources': ['testrumble.c'],
  },
  {
    'name': 'testthread',
    'sources': ['testthread.c'],
  },
  {
    'name': 'testiconv',
    'sources': ['testiconv.c', 'testutils.c'],
  },
  {
    'name': 'testime',
    'sources': ['testime.c', 'testutils.c'],
  },
  {
    'name': 'testjoystick',
    'sources': ['testjoystick.c'],
  },
  {
    'name': 'testkeys',
    'sources': ['testkeys.c'],
  },
  {
    'name': 'testloadso',
    'sources': ['testloadso.c'],
  },
  {
    'name': 'testlocale',
    'sources': ['testlocale.c'],
  },
  {
    'name': 'testlock',
    'sources': ['testlock.c'],
  },
  {
    'name': 'testmouse',
    'sources': ['testmouse.c'],
  },
  {
    'name': 'testoverlay2',
    'sources': ['testoverlay2.c', 'testyuv_cvt.c', 'testutils.c'],
  },
  {
    'name': 'testplatform',
    'sources': ['testplatform.c'],
  },
  {
    'name': 'testpower',
    'sources': ['testpower.c'],
  },
  {
    'name': 'testfilesystem',
    'sources': ['testfilesystem.c'],
  },
  {
    'name': 'testrendertarget',
    'sources': ['testrendertarget.c', 'testutils.c'],
  },
  {
    'name': 'testscale',
    'sources': ['testscale.c', 'testutils.c'],
  },
  {
    'name': 'testsem',
    'sources': ['testsem.c'],
  },
  {
    'name': 'testsensor',
    'sources': ['testsensor.c'],
  },
  {
    'name': 'testshader',
    'sources': ['testshader.c'],
  },
  {
    'name': 'testshape',
    'sources': ['testshape.c'],
  },
  {
    'name': 'testsprite2',
    'sources': ['testsprite2.c', 'testutils.c'],
  },
  {
    'name': 'testspriteminimal',
    'sources': ['testspriteminimal.c', 'testutils.c'],
  },
  {
    'name': 'teststreaming',
    'sources': ['teststreaming.c', 'testutils.c'],
  },
  {
    'name': 'testtimer',
    'sources': ['testtimer.c'],
  },
  {
    'name': 'testurl',
    'sources': ['testurl.c'],
  },
  {
    'name': 'testver',
    'sources': ['testver.c'],
  },
  {
    'name': 'testviewport',
    'sources': ['testviewport.c', 'testutils.c'],
  },
  {
    'name': 'testwm2',
    'sources': ['testwm2.c'],
  },
  {
    'name': 'testyuv',
    'sources': ['testyuv.c', 'testyuv_cvt.c'],
  },
  {
    'name': 'torturethread',
    'sources': ['torturethread.c'],
  },
  {
    'name': 'testrendercopyex',
    'sources': ['testrendercopyex.c', 'testutils.c'],
  },
  {
    'name': 'testmessage',
    'sources': ['testmessage.c'],
  },
  {
    'name': 'testdisplayinfo',
    'sources': ['testdisplayinfo.c'],
  },
  {
    'name': 'testqsort',
    'sources': ['testqsort.c'],
  },
  {
    'name': 'testbounds',
    'sources': ['testbounds.c'],
  },
  {
    'name': 'testcustomcursor',
    'sources': ['testcustomcursor.c'],
  },
  {
    'name': 'controllermap',
    'sources': ['controllermap.c', 'testutils.c'],
  },
  {
    'name': 'testvulkan',
    'sources': ['testvulkan.c'],
  },
  {
    'name': 'testoffscreen',
    'sources': ['testoffscreen.c'],
  },
]

foreach test_entry : tests
  test_executable = executable(
    test_entry['name'],
    test_entry['sources'],
    dependencies: [sdl2main_dep, sdl2_test_dep],
  )
  if get_option('run_test')
    test(
      test_entry['name'],
      test_executable,
      is_parallel: false,
    )
  endif
endforeach

